package com.beyondsoft.sabg.edu.service;

import com.beyondsoft.sabg.edu.model.db.core.BasicEntity;
import com.beyondsoft.sabg.edu.model.vo.core.PageableResponseVO;
import com.beyondsoft.sabg.edu.repository.core.SimpleRepository;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

/**
 * 通用的逻辑可以在这里写
 *
 * @Author Mo cr
 * @Date 2023/8/7
 */
public interface SimpleService<T extends BasicEntity, R extends SimpleRepository<T>> {
    R getRepo();

    List<T> findAll();

    Page<T> findAll(Pageable p);

    PageableResponseVO findAll(Object o, Pageable p);

    Optional<T> findById(Long id);

    List<T> findAllByIds(Iterable<Long> ids);

    void deleteByIds(List<Long> ids);

    /**
     * 将接口传递对象转换成数据库实体，并保存到库中
     *
     * @param t 数据库实体
     * @param o 接口传递对象
     * @return
     */
    T save(T t, Object o);

    /**
     * 批量新增
     * @param t
     * @param o
     * @return
     */
    List<T> batchSave(T t, Object o);

    /**
     * 批量修改实体类
     * @param o
     */
    void batchUpdate(Object o);



}
